package gwtool.drucken.printable;

import gwtool.container.Geprueft;
import gwtool.container.GeraetItem;
import gwtool.container.InlinePruefung;

import java.awt.Graphics;
import java.awt.Graphics2D;

public class PrintableGereatItem extends AbstractPrintableItem implements PrintableItem {

	private GeraetItem item;

	public PrintableGereatItem(GeraetItem item) {
		this.item = item;
	}

	@Override
	public int getLaenge(Graphics g) {
		if (item == null) {
			return 0;
		}
		int laenge = 13 * 15;
		laenge += item.getNoetigePruefungen().size() * 15;
		laenge += item.getDurchgefuehrtePruefungen().size() * 15;
		laenge += (Math.ceil((getStringLaenge("kommentar " + item.getKommentar(), (Graphics2D) g) / 500)) - 1) * 15;
		return laenge;
	}

	@Override
	public int drawItem(Graphics g, int zeile) {

		int startZeile = zeile;
		zeile += 15;
		g.drawString("Name: " + item.getBezeichner(), 25, zeile);
		g.drawString("Status: " + item.getStatus(), 212, zeile);
		g.drawString("Nächste Prüfung: " + item.getNaestePruefungen().toString(), 360, zeile);
		zeile += 15;
		g.drawString("Type: " + item.getGeraeteType(), 25, zeile);
		g.drawString("Inventarnummer: " + item.getInventarnummer(), 280, zeile);
		zeile += 15;
		g.drawString("Hersteller: " + item.getHersteller(), 25, zeile);
		g.drawString("Lieferant: " + item.getLieferant(), 280, zeile);
		zeile += 15;
		g.drawString("Menge: " + item.getMenge(), 25, zeile);
		g.drawString("Größe: " + item.getGroesse(), 280, zeile);
		zeile += 15;
		g.drawString("Preis: " + item.getPreis() + "€", 25, zeile);
		g.drawString("Ablageort: " + item.getAblageOrt(), 280, zeile);
		zeile += 15;
		g.drawString("Ausgegeben am: " + dateToString(item.getAusgegebenAm()), 25, zeile);
		g.drawString("Ausgegeben an: " + item.getAusgegebenAn(), 280, zeile);
		zeile += 15;
		g.drawString("Beschafft am: " + dateToString(item.getBeschafftAm()), 25, zeile);
		g.drawString("Hergestellt am: " + dateToString(item.getHergestelltAm()), 280, zeile);
		zeile += 15;
		g.drawString("Ausgemustert am: " + dateToString(item.getAusgemustertAm()), 25, zeile);

		g.drawLine(20, zeile + 5, 574, zeile + 5);
		zeile += 15;
		g.drawString("Nächste Prüfungen: ", 25, zeile);
		zeile += 15;

		for (Geprueft geprueft : item.getDurchgefuehrtePruefungen()) {
			g.drawString(geprueft.toString(), 25, zeile);
			zeile += 15;
		}
		g.drawLine(20, zeile + 2, 574, zeile + 2);
		zeile += 15;
		g.drawString("Nötige Prüfungen: ", 25, zeile);
		zeile += 15;

		for (InlinePruefung geprueft : item.getNoetigePruefungen()) {
			g.drawString(geprueft.toString(), 25, zeile);
			zeile += 15;
		}
		g.drawLine(20, zeile + 2, 574, zeile + 2);
		zeile += 15;
		zeile = drawStringBlock((Graphics2D) g, "Kommentar: " + item.getKommentar(), 25, zeile, 570);
		g.drawRoundRect(20, startZeile, 555, zeile - startZeile + 25, 5, 5);
		return zeile;
	}
}
